import {
	getOnlineOrder,
	getPay,
	getPaying,
	getOnlinePay
} from '@/common/api/index.js'

import { pageList } from '@/common/public_url.js'
import kdic from 'utils/statusCode.js'

// #ifdef H5
var jweixin = require('@/common/js_sdk/jweixin-module@1.6.0.js')
// #endif

export function goFirstPage(){
	// #ifdef APP-PLUS || MP-WEIXIN
	uni.switchTab({
		url: '/pages/index/index'
	})
	// #endif
	// #ifdef H5
	window.location.href = pageList.home
	// #endif
}
// 获取年月日时分秒，当前时间、day天前
export function getCurrentTime(flag, day){
	let t = new Date()
	
	if(day){
		t = new Date(new Date().getTime() - day*3600*24*1000)
	}
	let y = t.getFullYear()
	let m = t.getMonth() + 1 >= 10 ? (t.getMonth() + 1) : '0' + (t.getMonth() + 1)
	let d = t.getDate() >= 10 ? t.getDate() : '0' + t.getDate()
	
	let h = t.getHours() >= 10 ? t.getHours() : '0' + t.getHours()
	let mm = t.getMinutes() >= 10 ? t.getMinutes() : '0' + t.getMinutes()
	let s = t.getSeconds() >= 10 ? t.getSeconds() : '0' + t.getSeconds()
	if(flag){
		if(flag == 'all'){
			return  y + '-' + m + '-' + d + ' ' + h + ':' + mm + ':' + s
		}else if(flag == 'month'){
			// 每月1号
			return  y + '-' + m + '-' + '01'
		} else{
			return y + '-' + m + '-' + d
		}
	}else{
		return y + '年' + m + '月' + d + '日'
	}
}


// 时间转换成 xx天xx小时xx分钟
export function durationTime(StatusMinute){
  var day = parseInt(StatusMinute / 60 / 24);
  var hour = parseInt((StatusMinute / 60) % 24);
  var min = parseInt(StatusMinute % 60);
  var StatusMinute = "";
  if (day > 0) {
    StatusMinute = day + "天";
  }
  if (hour > 0) {
    StatusMinute += hour + "小时";
  }
  if (min > 0) {
    StatusMinute += parseFloat(min) + "分钟";
  }
  return StatusMinute;
}

	
export function showTishi(text) {
	uni.showToast({
		title: text,
		icon: 'none',
		duration: 2000
	})
}

// 显示隐藏loading
export function showAndHideLoading(time = 500){
	uni.showLoading({
		title: "查询中...",
		mask: true
	})
	setTimeout(function(){
		uni.hideLoading()
	},time)
}

// 手机号验证
export function phone_ver(phone) {
	var ver = /^1[0-9]{10}$/;
	return ver.test(phone)
}

// 身份证验证
export function id_ver(id) {
	var ver = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
	return ver.test(id)
}

// 密码校验
export const validatePassword = (pass) => {
	const reg=/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$/
	return reg.test(pass)
}

export function routerBackOne() {
	uni.navigateBack({
		delta: 1,
		 success: function () {
			// 返回成功时的回调函数
			  // uni.setStorageSync('previousPageRoute', this.$mp.page.route);
			  // console.log('previousPageRoute');
			  // onLoad()
			    const pages = getCurrentPages();
			    const prevPage = pages[pages.length - 2]; // 上一页的页面实例
				if (prevPage && typeof prevPage.someMethod === 'function') {
				  prevPage.someMethod();
				}
		  }
	})
}

// 确定关闭，返回上一层
export function SM_close_back(title,explain) {
	uni.showModal({
		title: title,
		content: explain,
		showCancel: false,
		success: function(res) {
			if (res.confirm) {
				uni.navigateBack({
					delta: 1
				})
			}
		}
	});
}


export function getDataTime(tiem) {
	let timeResult = ''
	const day = parseInt(tiem / 60 / 24);
	const hour = parseInt(tiem / 60 % 24);
	const min = parseInt(tiem % 60);
	// console.log(">>>>>>>>>>>>timeStamp day:"+day+" hour:"+hour+" min"+min)
	if (day > 0) {
		timeResult = day + "天";
	}
	if (hour > 0) {
		timeResult += hour + "小时";
	}
	if (min > 0) {
		timeResult += parseFloat(min) + "分钟";
	}
	return timeResult;
}

export function getDuration_s(second) {
	var days = Math.floor(second / 86400);
	var hours = Math.floor((second % 86400) / 3600);
	var minutes = Math.floor(((second % 86400) % 3600) / 60);
	var seconds = Math.floor(((second % 86400) % 3600) % 60);
	var duration = "";
	if (days > 0) {
		duration = days + "天";
	}
	if (hours > 0) {
		duration += hours + "小时"
	}
	if (minutes > 0) {
		duration += minutes + "分"
	}
	if (seconds > 0) {
		duration += seconds + "秒";
	}
	return duration;
}

export function getDuration(item){
	var time, inTime, outTime;
	if(item.in_time){
		inTime = new Date(item.in_time).getTime()
	}
	if(item.out_time){
		outTime = new Date(item.out_time).getTime()
	}else{
		outTime = new Date().getTime()
	}
	time = (outTime - inTime) / 1000
	return getDuration_s(time)
}


// 距离换算
export function getDistance(lat1, lng1, lat2, lng2) {
	lat1 = lat1 || 0;
	lng1 = lng1 || 0;
	lat2 = lat2 || 0;
	lng2 = lng2 || 0;
	var rad1 = lat1 * Math.PI / 180.0;
	var rad2 = lat2 * Math.PI / 180.0;
	var a = rad1 - rad2;
	var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
	var r = 6378137;
	return parseInt((r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(
		rad2) * Math.pow(Math.sin(b / 2), 2)))).toFixed(0))
}


// 微信H5支付
export function toWxPay(response) {
	jweixin.config({
		// debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
		appId: response.appId, // 必填，公众号的唯一标识
		timestamp: response.timeStamp, // 必填，生成签名的时间戳
		nonceStr: response.nonceStr, // 必填，生成签名的随机串
		signature: response.authSign, // 必填，签名，见附录1
		jsApiList: ['chooseWXPay'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
	});
	jweixin.ready(function() {
		// config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
		jweixin.chooseWXPay({
			appId: response.appId, //公众号名称，由商户传入
			timestamp: response.timeStamp, //时间戳，自1970年以来的秒数
			nonceStr: response.nonceStr, //随机串
			package: response.package,
			signType: response.signType, //微信签名方式：
			paySign: response.paySign, //微信签名
			success: function(res) {
				// console.log('支付成功' + res)
				uni.showToast({
					title: '支付成功！'
				})
				setTimeout(function() {
					uni.navigateBack()
				}, 800)
			},
			cancel: function(res) {
				console.log('取消支付' + res)
				uni.showToast({
					title: '取消支付',
					icon: 'none'
				})
			},
			fail: function(res) {
				console.log('支付失败' + res)
				uni.showToast({
					title: '支付失败',
					icon: 'none'
				})
			}
		})
	});
	jweixin.error(function(res) {
		console.log('身份验证失效' + res)
	});
}

// 微信小程序支付
export function wxAppletPay(res){
	wx.requestPayment({
		"timeStamp": res.trade_no.timeStamp,
		"nonceStr": res.trade_no.nonceStr,
		"package": res.trade_no.package,
		"signType": res.trade_no.signType,
		"paySign": res.trade_no.paySign,
		'paytype': res.trade_no.paytype,
		"success": function(res) {
			console.log('成功' + res)
		},
		"fail": function(res) {
			console.log('失败')
			console.log(res)
		},
		"complete": function(res) {
			console.log('走到' + res)
		}
	})
}


// APP支付
export function appPay(orderInfo, provider) {
	// console.log(JSON.stringify(orderInfo),provider, 'appPay')
	// orderInfo = JSON.stringify(orderInfo)
	uni.requestPayment({
		provider: provider,
		orderInfo: orderInfo,
		success: function(res) {
			showTishi('支付成功 即将返回上一页')
			setTimeout(() => {
				routerBackOne()
			}, 1000)
		},
		fail: function(err) {
			console.log(err)
			showTishi('取消支付或支付失败，请稍后重试')
		}
	});
}


// 支付宝生活号引入插件
export function loadAlipayJsap() {
	var script = document.createElement('script');
	script.src = "https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.min.js";
	document.body.appendChild(script);
}

// 支付宝生活号支付宝支付
export function aliPay(tradeNO) {
	loadAlipayJsap()
	
	ap.tradePay({
		tradeNO: tradeNO
	}, function(res) {
		if (res.resultCode == '9000') {
			showTishi('支付成功 即将返回上一页')
			setTimeout(() => {
				routerBackOne()
			}, 1000)
		} else {
			ap.alert('支付失败，' + res.resultCode);
		}
	})
}

// 支付新接口
export function goPaying(params, type) {
	// console.log(params,'paying参数')
	if(uni.getStorageSync('appid')){
		params.appid = uni.getStorageSync('appid')
	}
	if(params.paytype == 'alipay'){
		params.app_id = uni.getStorageSync('ali_appid')
	}
	getPaying(params) //请求支付接口
		.then(res => {
			// console.log(res, JSON.stringify(params), 'paying接口返回+参数')
			if (res.status == 0) {
				if(params.paytype == 'APP'){
					uni.showToast({
						title: '使用余额支付成功',
					})
					routerBackOne()
				}else{
					var orderInfo, provider = 'wxpay';		
					// #ifdef APP-PLUS
					if (params.paytype == 'wechatpay') {
						// orderInfo = res.third_data
						provider = 'wxpay'
						orderInfo = {
							appid: res.third_data.appid,
							noncestr: res.third_data.noncestr,
							package: res.third_data.package, // 固定值，以微信支付文档为主
							partnerid: res.third_data.partnerid,
							prepayid: res.third_data.prepayid,
							timestamp: res.third_data.timestamp,
							sign: res.third_data.sign // 根据签名算法生成签名
						};
					} else {
						provider = 'alipay'
						orderInfo = res.third_data.signed_string
					}
					appPay(orderInfo, provider)
					// #endif
					// #ifdef H5
					if (type == 'wxFlag') {
						toWxPay(res.third_data)
					} else {
						aliPay(res.third_data.trade_no)
					}
					// #endif
					
					// #ifdef MP-WEIXIN
					
					// #endif
				}
			} else if(res.status == 10006) {
				showTishi('查询状态已过期，即将跳转重新查询！')
				setTimeout(()=>{
					window.location.href = pageList.subscribe
				}, 800)
			} else if(res.status == 30014) {
				showTishi(res.detail + ',' + '请在刷新后重新支付。' )
				const self = this
				setTimeout(()=>{
					self.$router.go(0)
				}, 800)
			} else {
				// console.log(res,'paying-接口调用失败')
				// showTishi('状态码' + res.status + '_' + kdic.getCode(res.status))
				uni.showToast({
					title: res.detail?res.detail : '错误状态码：' + res.status,
					icon: 'none'
				})
			}
		})
}

